package cn.edu.csust.coursecard.dao;


import cn.edu.csust.coursecard.dao.entity.Post;
import cn.edu.csust.coursecard.dao.entity.PostImage;
import cn.edu.csust.coursecard.dao.entity.PostSearchVo;
import cn.edu.csust.coursecard.dao.dto.IndexPost;
import cn.edu.csust.coursecard.dao.dto.Theme;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

@Mapper
public interface PostMapper {
    
    /**
     *  存入帖子内容
     */
    int insertSelective(Post post);
    
    
    /**
     * 通过主键查找
     */
    Post selectByPrimaryKey(Integer postId);
    
    /**
     * 获取主题
     */
    List<Theme> selectThemes();
    
    /**
     * 存入帖子图片
     */
    int insertPostImage(@Param("postId") Integer postId,@Param("urls") List<String> urls);
    
    /**
     * @return 首页帖子
     */
    List<IndexPost> selectIndexPost(@Param("themeId") Integer themeId,@Param("start") Integer start,@Param("rows") Integer rows);
    
    /**
     * 更新帖子
     */
    void updatePostCommentNum(@Param("postId") Integer postId,@Param("isIncr") Boolean isIncr);
    
    
    
    /**
     * 通过userid查询帖子信息
     */
    List<Post> selectPostByUserId(Integer userId);
    
    /**
     * 删除帖子
     */
    int deletePostByPrimaryKey(Integer postId);
    
    /**
     * 查找帖子的图片
     */
    List<PostImage> selectPostImages(Integer postId);
    
    /**
     * 删除帖子的图片
     */
    int deletePostImagesByPostId(Integer postId);
    
    List<IndexPost> selectIndexPostByIds(@Param("ids") Set<Integer> enshrinePostIds);
    
    /**
     * 批量更新帖子的点赞数量
     * @param posts
     * @return
     */
    int updatePostLikeNum(@Param("posts") List<Post> posts);
    
    int insertTheme(@Param("theme") Theme theme);
    
    int deleteTheme(Integer themeId);
    
    Integer selectPostCount(@Param("themeId") Integer themeId);
    
    
    List<IndexPost> selectIndexPostByPostVo(PostSearchVo postSearchVo);


//    /**
//     * 添加博客与主题关系
//     */
//    void insertPostTheme(@Param("postId") Integer postId,@Param("themeIds") List<Integer> themeIds);
}
